1. Field of the Invention
The present invention relates generally to Virtual Machine (VM) technology and, more particularly, to a method and system for unattended installation of a guest operating system (GOS) in a VM.
2. Background Art
In the past decade, capabilities of computer systems have increased significantly. Computer systems process large volumes of information entered by a user through an application graphical user interface (GUI). Typically users not only enter data, but also invoke a large number of the same events or sequences of actions when using a particular application. For example, users click on certain GUI buttons to invoke the events and use keystrokes on a keyboard to enter data. User actions can be recorded and automatically replicated.
There are a number of systems for recording and automating user mouse clicks and keyboard strokes. A conventional system typically records the sequences of user actions, such as keystrokes and mouse clicks, and reproduces this sequence as an executable script. An example of such a system is illustrated in FIG. 1. GUI 101 has event buttons 112 and 113 and a list of entries 111. The sequence of mouse clicks made by a user is recorded and incorporated into a scripting application 120. When the scripting application 120 is executed, it simulates the user activity. Thus, all of the user actions can be automatically reproduced later.
An example of a conventional scripting application such as the one depicted in FIG. 1 is Apple Script™. This application incorporates into a script the sequences of keystrokes and mouse clicks. It also adds to the script commands delays, and start and stop times of certain action performed with the GUI. Thus, all of the constantly performed user actions are automatically reproduced in exact same manner.
A typical scripting application is executed in an operating system (OS) and uses system API calls for acquiring the information from a GUI of a monitored application. It also uses OS API functions for performing simulated user actions on the application's GUI. An example of such a system is shown in FIG. 2. A scripting application 212 and a monitored GUI of application 211 run under OS 201 in user space. Scripting application 212 uses OS API 210 calls to get information about user actions from GUI of monitored application 211. It also uses API 210 from OS space for executing simulated user actions on GUI of application 211. Thus, user actions are simulated and replicated internally within the computer system OS 201.
Another example of user simulating application is Rational Robot (www.rationalrobot.com), which allows automated testing of applications. Rational Robot first records the tester's mouse/keyboard actions, as well as delays caused by the tester waiting for the GUI window to appear or become available. Then the information about tester's actions and delays is incorporated into a script for an automated test plan. Rational Robot analyzes the results of test script execution and posts bugs to the Clear Quest bug tracking system automatically.
Conventional simulation systems may run on a physical computer system and utilize the computer's OS. The industry trend of virtualization and isolation of computer system resources makes the task of automating user activities more complex. A Virtual Machine (VM) is a type of an isolated Virtual Execution Environment that runs on the same physical machine simultaneously with the host OS. Each VM instance executes its own OS kernel. Support of Virtual Machines is implemented using a VM Monitor and/or a Hypervisor.
Virtualization allows running a number of VMs on the same physical machine or processor. Thus, each of the VMs needs automation of user activities, in particular when a guest OS needs to be installed in the VM. However, a conventional scripting application can only run in the host OS. In case of installation of a guest OS on a VM, it is not possible to use any existing scripting applications for automation of the installation process.
Accordingly, there is a need for a system and a method for an automatic unattended installation of any type of a guest OS on a Virtual Machine.